// 操作数据库模块 扫地僧 2019年5月30日19:58:46
const mysql = require('mysql');
const logPrefix = '[mysql]';
//连接池技术
var pool = mysql.createPool({
    host     : 'localhost',
    user     : 'root',
    password : '123456',
    port     : '3306',
    database : 'epidemic'
});

/**
 * 增删改查 通用组件  同步写法
 *
 * @param sql 增删改查sql 含占位符
 * @param params 跟占位符顺序匹配的参数数组，要求跟sql的占位符数量一样多
 */
let exec = function (sql,params) {
    // 返回一个 Promise
    try {
        return new Promise((resolve, reject) => {
            pool.getConnection(function (err, connection) {
                if (err) {
                    reject(err)
                } else {
                    connection.query(sql, params, (err, results) => {

                        if (err) {
                            reject(err)
                        } else {
                            // console.log(`${logPrefix}result : ${JSON.stringify(results)}`);
                            resolve(results)
                        }
                        // 结束会话
                        connection.release()//释放连接
                    })
                }
            })
        })
    }catch (e) {
        // console.log(e);
        return false;
    }
};

/**
 * 将所有的参数格式化成数组 参数是可变参数（可变参数在函数声明的时候不写）
 * @returns {Array}
 */
let formatParams = function () {
    var array = [];

    //js中有个变量arguments,可以访问所有传入的值
    for(var i = 0, l = arguments.length; i < l; i++){
        array.push(arguments[i]);
    }
    return array;
};

module.exports = {exec, formatParams};